package cn.wolfcode.trip.base.service;

import cn.wolfcode.trip.base.domain.User;
import cn.wolfcode.trip.base.query.QueryObject;
import cn.wolfcode.trip.base.query.UserQueryObject;
import com.github.pagehelper.PageInfo;

import java.util.Map;

public interface IUserService {

    /**
     * 用户注册
     */
    public void register(User user);

    /**
     * 用户登录
     * @param email 邮箱
     * @param password  密码
     * @return 当前用户
     */
    public User login(String email,String password);

    /**
     * 注销登录
     */
    void logout();

    /**
     * 高查
     * @param qo : 关键字/分页
     * @return
     */
    PageInfo<User> query(QueryObject qo);

    /**
     * 更新员工
     * 不需更新email及密码
     * @param user
     */
    void update(User user);

    /**
     * 获取某个用户
     * @param id
     * @return
     */
    User get(Long id);

    /**
     * 查看某个用户的关注及粉丝
     * @param id
     * @return
     */
    Map getRelations(Long id);

    /**
     * 关注时保存两个用户的关系
     * @param userId : 被关注者的id
     * @param followId : 关注者的id
     */
    void saveRelation(Long userId, Long followId);

    /**
     * 删除两者间的关系
     * @param userId : 被关注者
     * @param followId : 关注者
     */
    void deleteRelation(Long userId, Long followId);

    /**
     * 查询两个用户间的关系  followId是否关注了userId
     * @param userId : 被关注者
     * @param followId : 关注者
     * @return
     */
    int getTwoUserRelation(Long userId, Long followId);

    /**
     * 搜索用户
     * @param qo
     * @return
     */
    PageInfo getUserNickNameCounts(UserQueryObject qo);
}
